home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 711 / theweb / demo.doc < prev    next >
Text File  |  1995-03-18  |  45KB  |  932 lines

  1.  
  2.         The Web System Data Collection and Management Program Suite
  3.               ===============================================
  4.  
  5.                         -- Demonstration Edition --
  6.  
  7.                                 1992 July 1
  8.  
  9. Contents:                                      LINE:     POSITION:
  10.  
  11.         Concepts                                 31          5%
  12.         The Demonstration Package               117         15%
  13.         Distribution                            159         20%
  14.         Getting Started                         210         24%
  15.         Prerequisites and Package Components    233         26%
  16.         Brief Overview of the Master Screen     293         33%
  17.         The Control Buttons                     326         37%
  18.         The Project Menu                        466         54%
  19.         Temporary Windows                       488         55%
  20.         Loading Configurations from File        498         57%
  21.         CLI command line for the Web            531         60%
  22.  
  23.         The Demonstration Modules               561         62%
  24.         Module Parameter Panels                 659         72%
  25.  
  26.         Principles                              823         88%
  27.  
  28. ---------------------------------------------------------------------
  29.  
  30.  
  31. Concepts
  32. ========
  33.  
  34. Rather than being a single program, the Web should be thought of as
  35. a configurable, easily extensible suite of programs for the integrated
  36. management of data collection and processing.  The one invariant is the
  37. Web Master control program, giving the user a visual "flow diagram"
  38. representation of the configuration that he or she can manipulate with
  39. ease -- even while data is flowing.
  40.  
  41. The underlying concept is of a series of data processing elements,
  42. beginning with a data `source' -- which might be acquiring input directly
  43. from a hardware channel, from a disk file, or even as in the demonstration
  44. generating it itself -- and subsequent `filters' that act on the data.
  45. The elements are connected by paths along which the data flows; each
  46. element takes some specific action with respect to the data, then passes
  47. it along the path (perhaps modified, perhaps not).
  48.  
  49. A path may be more elaborate than just beginning at a source and passing
  50. through some filters in straight sequence.  It may contain branches, where
  51. the data flow is duplicated into separate streams.  Alternatively, more
  52. than one stream may converge on an element; most filters can accept several
  53. input connections, although the data all flows on through a single output
  54. path.
  55.  
  56. In addition to the simple Sources and Filters exemplified by the modules
  57. here, it is possible for a single element to have multiple input and
  58. output connections, each with a different function.  A multi-connection
  59. `Path-Synchronization' module has been included in the set to give some
  60. idea of this.
  61.  
  62. Naturally the system takes full advantage of the Amiga's multitasking:
  63. several flow paths -- either independent or connected -- can be working on
  64. their own data simultaneously.  On the other hand, the design is such as to
  65. avoid unnecessary task-switching; typically a single process handles most
  66. of the data manipulation algorithms that are chained into one path.
  67.  
  68. The data to be processed is purely the concern of the Modules "plugged
  69. in" to the Web.  The Master program itself has no interest in, or control
  70. over, the data format: it solely determines the paths over which the data
  71. will flow.  The only inherent assumption is that the data can be maintained
  72. as "packets" in some way, so that each "station" on a path can work on a
  73. packet at a time.  There is complete freedom as to what form a packet
  74. should take, and what may happen to it on its travels.
  75.  
  76. By the way, those of you familiar with products for other platforms that
  77. look superficially similar, be cautious about equating the Web's function
  78. with these.  For instance, the Web is not a `Simulation' package: such
  79. typically compute the state of the whole system repetitively at specific
  80. time-steps, based on the state at the previous time-step; calculations are
  81. performed `synchronously' for all the elements, and each generates one
  82. data-point per step.  In contrast, the Web is designed for processing
  83. real-time data, and has essentially an asynchronous `data-flow' approach,
  84. with many data-points (as many as possible for efficiency) in each packet.
  85.  
  86. [Note to prospective purchasers:  the Web Master and SHADOW library
  87. themselves are proprietary, but sources will be available (by licence
  88. arrangement) for most of the existing data modules -- with the exception,
  89. I believe, of the FFT code, which is copyright by others.  Header files
  90. and documentation for the protocols used by the Web will be included in
  91. the full package.]
  92.  
  93. Although the modules included here are directed toward a particular
  94. application, the system is designed to be adaptable to a wide range
  95. of needs.  "Sampler" modules can be written to acquire data from
  96. any available source that can connect to the Amiga; output of data
  97. to channels other than display or disk could also easily be arranged.
  98. The packet structure is also totally flexible, and can be designed
  99. to suit the purpose.  With suitably written modules, some examples of
  100. possible applications that spring to mind are: neural spike recording
  101. and analysis, MIDI event processing... even image processing, where a
  102. series of transforms is to be applied in sequence to an image.
  103.  
  104. The modules included in this demonstration edition are a subset of those
  105. designed for its initial application -- the collection and analysis of
  106. "acoustic events".  Absent are the actual data collection modules that
  107. would interface with hardware such as a GPIB card, and the modules which
  108. write the data to disk files.  The data source here is simply a random
  109. wave generator (although a FileRead module and some sample data are also
  110. provided).  Included, though, are modules for scaling and limiting the
  111. signals, cutting segments out of the waveform, and FFT and inverse FFT,
  112. as well as an audio output and two display modules: a straightforward
  113. "Scope", and an X-Y "Lissajous" display.  Up to sixteen channels of
  114. waveform can be held in a packet.
  115.  
  116.  
  117. The Demonstration Package
  118. =========================
  119.  
  120. This demonstration edition of the Web Master has all the capabilities
  121. of the full program, except that a configuration cannot be recorded to
  122. a disk file.  Two Demo startup icons are supplied, as well as an initial
  123. installation icon (see below for how to get started).
  124.  
  125. The first icon starts up the full environment, with all the modules, and
  126. loads a trivial configuration -- a random generator connected to a scope.
  127. From that starting point, you can experiment with the features of the
  128. system.
  129.  
  130. The second Demo loads a more complex configuration that connects all
  131. the available types of module in a chain (with one branch).  Two channels
  132. of random wave are first FFTransformed, and a gate is used to extract
  133. narrow segments of the transformed data; this is then inverse-transformed
  134. to produce a narrow-band signal, which is boosted a bit by a scaler and
  135. passed to both audio and visual displays.  (The branch at the end of the
  136. path is just for demonstration: it is actually more efficient to have all
  137. the elements in-line, because they are then managed by a single process.)
  138. Explore this one by using the `Select' and `Param' operations to see what
  139. each element in the chain is doing.  In particular, bring up the parameter
  140. control panel for the Gating element and try changing the cut limit sliders
  141. for channels 0 and 1 to see the effect on the output waves.
  142.  
  143. A third demonstration configuration is included, but it has no icon to
  144. load it.  You will have to have started the Web with one of the icons
  145. for the other demos, then use the `Load Config' menu option to load
  146. `Data_Demo'.  (To ensure it runs at full speed, you should preferably
  147. clear the original configuration with `New' from the same menu first,
  148. but this is not necessary.  All three demos may be running at the same
  149. time, if you wish.)  This demo displays some actual recorded data in X-Y
  150. form, to give you some idea of its "real world" use.  (The range of data
  151. displayed has been kept short enough so that the program should be able
  152. to read it from (DOS) buffer storage, rather than continually reading it
  153. off disk.  If this isn't so in your case, and you are running from a
  154. floppy, you might want to copy everything -- or just the DATA directory --
  155. to RAM: and try again.)
  156.  
  157. ---------------------------------------------------------------------
  158.  
  159. Distribution
  160. ============
  161.  
  162. This suite of programs and its documentation is copyright, all rights
  163. reserved.  This demonstration package is freely distributable, however,
  164. provided that it is kept intact as initially provided, and that no charge
  165. is made for its distribution aside from that necessary to cover duplication
  166. and other reasonable overheads.
  167.  
  168. The full package with the complete existing set of modules is available
  169. from the authors, price by arrangement depending on needs.  We are willing
  170. to write modules for other environments, or to consult in your own
  171. development of such modules.  As mentioned above, sources for the
  172. current data modules are included with the full package.
  173.  
  174. For more information, please contact:
  175.  
  176.         Pete Goodeve
  177.         3012 Deakin St #D
  178.         Berkeley, CA 94705
  179.  
  180.         phone: (510) 848-2092
  181.  
  182.         Internet: pete@violet.Berkeley.edu
  183.  
  184.  
  185.         David Navas
  186.         7 Avocet Dr. #205
  187.         Redwood Shores, CA 94065
  188.  
  189.         phone: (415) 591-2907
  190.  
  191.         Internet: navas@cory.berkeley.edu
  192.  
  193.  
  194. For technical information (no orders please), you may also contact:
  195.  
  196.         Kent Polk
  197.         Div. 17
  198.         Southwest Research Institute
  199.         San Antonio TX 78228-0510
  200.  
  201.         phone: (512) 522-2882
  202.         Internet: kent@swrinde.nde.swri.edu
  203.  
  204. Please use the Internet addresses for information requests only.  Orders
  205. should only be sent through US Mail.
  206.  
  207. ---------------------------------------------------------------------
  208.  
  209.  
  210. Getting Started
  211. ===============
  212.  
  213. A full discussion of prerequisites and so on follows, but if you want
  214. to try it out immediately, provided that you are running version 2.04
  215. (or later) of the operating system and have the supplied package available
  216. with all its components in some directory of your system, just follow these
  217. steps:
  218.  
  219. Double-click on the `Install Libs' icon.  This will copy two required
  220. library files to your `LIBS:' directory: `ppipc.library' (size about 3K)
  221. and `shadow.library' (24K).
  222.  
  223. Double-click on `Web DEMO 1'.  This will start the Web Master and all
  224. the supplied modules, then load a trivial configuration.  You may play
  225. with this as you desire, but for explanations look to the sections below.
  226.  
  227. To close down the Web when you are done, use the `QUIT' item of the main
  228. menu.  This shuts everything down, except for two things: the module Master
  229. program is left sleeping in memory and the Traveller program remains
  230. resident (see later for how to remove these items as well).
  231.  
  232.  
  233. Prerequisites and Package Components
  234. ====================================
  235.  
  236. The Web program and associated modules need the 2.0 environment, and
  237. ppipc.library and shadow.library must be available in `LIBS:'. (The modules
  238. also use IEEE floating point math, so mathieeedoubbas.library must be there
  239. also.)  In the demonstration package an icon is provided ("Install Libs")
  240. that will copy the two special libraries for you, or you may do it yourself.
  241. (They are in the `Libs' subdirectory.)
  242.  
  243. The system should run on any Amiga, with or without floating point
  244. hardware.  It will. however, not show its full speed potential on a
  245. basic 68000 machine (!).  The minimum memory needed has not been directly
  246. checked, but it probably should run in a 1MB machine.
  247.  
  248. Whatever the rest of the environment (Samplers, Filters and so on) three
  249. program files must be available for the Web system to function.  One is
  250. the main `Web' program itself, which is normally started at the beginning
  251. of a session and remains running until the end.  The `Traveller' program
  252. performs all the data-transfers along the links of the Web, and must be
  253. available -- either as a resident module, or in the path for the CLI from
  254. which Web was invoked -- while Web is running.  Things will start up faster
  255. if it is made resident; one Traveller process is started (automatically)
  256. for each Source element in the Web.  The third module is `Brancher',
  257. required to manage the forking of data at branch points; this should be
  258. started when other modules are, before any configuration is built or
  259. loaded; only one brancher process runs, however many branch points are
  260. placed.
  261.  
  262. The actual data-handling modules must be run after Web has started, but
  263. before building a configuration.  These `Source' and `Filter' modules all
  264. require a common "Module Master" process to be running also before they
  265. will start (distinct from the "Web Master" itself).  This program
  266. (`MODULES/Master') may be started either before or after `Web', but
  267. always before the modules.
  268.  
  269. Note that when the Web Master is eventually shut down, all the Module
  270. and Traveller processes also terminate.  The Module Master, however,
  271. does not: it remains in memory (dormant) until explicitly shut down with a
  272. `BREAK' CLI command to its process.  (Use the `STATUS' command to find the
  273. right CLI process number `n', then issue `BREAK n', or do the whole thing
  274. in one step with the following command line:
  275.  
  276.         break `status COM=MODULES/Master`
  277.  
  278. -- note the back quotes.)  If the Traveller module has been made resident
  279. (as is done by the demos) you may remove it also with the usual `RESIDENT
  280. traveller REMOVE' CLI command.
  281.  
  282. The `Demo' icons in this package invoke a script (`run_Web') that performs
  283. all the required startups properly.  This is the most convenient way of
  284. starting the system, but the components can be started directly and
  285. individually if preferred, provided that the sequence of startup is
  286. observed.  (Direct execution icons are provided for the Web and Brancher;
  287. the Traveller also has an icon, but it is normally pointless to start
  288. this that way; no icons have been included for the modules, but if you
  289. want to add your own there is no problem.)
  290.  
  291.  
  292.  
  293. Brief Overview of the Master Screen
  294. ===================================
  295.  
  296. The buttons on the right represent the running modules, those at the
  297. bottom the operations that can be performed.  There is a `Project' menu
  298. that contains a fairly standard set of choices: `New', `Load Config',
  299. `Save Config' (inhibited for the demonstration), `About', and `QUIT'.
  300. (The "Direction" Menu over on the right-hand side is not one you are
  301. ever likely to need, but it can be used to change the orientation of
  302. elements placed on the screen.  There is also a `Modules' menu which
  303. is only relevant to the full system; it is disabled for the demo.)
  304.  
  305. Each module appears as a button on the right-hand panel.  Clicking on one
  306. of these will select that module for relevant operations, such as "Place"
  307. or "Insert". The name on the button is usually not quite the same as the
  308. filename of the Module it represents (here, the program "RanGen" connects
  309. to the "Random Waves" button, "ClipnScale" is "Scale/Clip", and so on).
  310.  
  311. An operation mode selected from the lower buttons remains in effect until
  312. another is picked -- except for a couple, like `Cancel', that are
  313. momentary.  A description of each button's function follows below.
  314.  
  315. Other windows will appear on the Web Master screen as well, in the
  316. course of a session.  Each Scope element, for instance, has its own display
  317. window, which is maintained as long as that element exists. And in `Select'
  318. mode, clicking on a part of the diagram causes the appearance of one or two
  319. temporary panels: one gives information about the item that was selected,
  320. the other -- if present -- presents a selection of possible actions to
  321. be taken on that item.  Most modules, too, have Parameter Control Panels,
  322. which can be displayed for an element by selecting in `Param' mode or
  323. using the `Param' button; they will remain until explicitly closed.
  324.  
  325.  
  326. The Control Buttons
  327. ===================
  328.  
  329.     Place           When this button is engaged, an instance of the
  330.                     current module (determined by whichever of the
  331.                     right-hand panel buttons is selected) will --
  332.                     if possible -- be placed in the main window at
  333.                     any point at which the (left-hand) mouse button
  334.                     is clicked.
  335.                     This is the default initial mode if no file
  336.                     was specified in the command line.
  337.  
  338.     Link            In this mode, elements (instances of modules)
  339.                     already placed on the screen may be connected
  340.                     into a chain by data paths.  Click first on the
  341.                     "output connector" (small dot on the right hand
  342.                     side of the element, usually), and then on one
  343.                     of the sides other than the output of the element
  344.                     you wish to connect it to.  If you click on
  345.                     intermediate (empty) points in the window between
  346.                     these two actions, the path will pass through those
  347.                     points as well.
  348.                     You may also begin a new path from an intermediate
  349.                     point on another (making a `Branch'); simply click
  350.                     first on the desired branch point rather than on an
  351.                     output connector.  (This action will be refused if
  352.                     the `Brancher' program is not running.)
  353.  
  354.     Insert          This is similar to `Place', except that the element
  355.                     can only be inserted into an already existing path.
  356.                     A single click at the desired point in the path will
  357.                     insert a new instance of the selected module there.
  358.  
  359.     Param           In this mode, clicking on any element that has a
  360.                     control (`Parameter') panel will bring that panel up.
  361.                     This panel remains on the screen until explicitly
  362.                     closed.  (The screen element the panel refers to will
  363.                     remain highlighted while the panel is visible, unless
  364.                     a `Select' or other operation on the same element later
  365.                     clears this.)
  366.  
  367.     Replace         In this mode, clicking on an element will, if
  368.                     POSSIBLE, replace it with an instance of the
  369.                     currently selected module.  It will fail if the
  370.                     two elements are not compatible (trying to replace
  371.                     a filter in a data path with a source, for example).
  372.  
  373.     Elide           Is essentially the reverse of `Insert'.  Clicking
  374.                     on an element in a path will remove it but leave
  375.                     the path intact.  It can, of course, only operate
  376.                     on elements that have exactly one input and one
  377.                     output connected. (Or, for convenience, on elements
  378.                     that aren't connected at all.)
  379.  
  380.     Delete          Clicking on an element will remove that element
  381.                     TOGETHER with any flow links currently connected to it
  382.                     (unless one of these links itself cannot be removed,
  383.                     in which case the diagram will not be changed).
  384.  
  385.     CUT Link        Click on one end of the flow you wish to remove,
  386.                     then on the other. (It doesn't matter in which
  387.                     order you do this.)
  388.                     Note that you cannot remove a link that leads to
  389.                     a Branch: you must delete one of the branch links
  390.                     first.
  391.  
  392.     Restore Link    IF neither of the elements previously connected
  393.                     by the last link you cut has been moved in the
  394.                     meantime, clicking this button will restore the
  395.                     connection.  (This is a single action button --
  396.                     the current mode remains unchanged.)
  397.  
  398.     Move            Click on an element you wish to move, then on
  399.                     the new position you wish it to have.  Any data
  400.                     paths connected to the element will be suitably
  401.                     readjusted (to the program's satisfaction, at any
  402.                     rate! You may want to re-route them yourself).
  403.  
  404.     Route           Allows you to specify points you wish a given
  405.                     existing path to be adjusted to follow.  Click
  406.                     first on the output connector that is the source
  407.                     of the path, then on the points, in order, that
  408.                     you want it to go through, then finally on the
  409.                     (existing) input connection of that path.
  410.                     Note that you cannot change either of the connection
  411.                     points themselves with this command; this can only
  412.                     be done by cutting and re-Linking.
  413.  
  414.     Select          In this mode, you can click on any part of the diagram
  415.                     to bring up an information window about that point; the
  416.                     window remains visible until you either select another
  417.                     item or click on some empty space (or `CANCEL').
  418.                     The contents of the information window depend on whether
  419.                     you have clicked on an element, a connecting link, a
  420.                     connection point, or a branch point. (The selected
  421.                     diagram element is highlighted.)
  422.  
  423.                     If the selected item is an element, its current name
  424.                     is shown within a string gadget, which you may edit
  425.                     as you desire; a unique default name is initially
  426.                     assigned by the program (`SRCn' or `FLTn' as
  427.                     appropriate). (In the full system, this name would
  428.                     be stored when a configuration file is saved.  It is
  429.                     also passed to the modules for their own use, but as
  430.                     it is a new addition none of the supplied modules
  431.                     make use of this yet.)
  432.  
  433.                     If appropriate, a window of applicable buttons will
  434.                     also pop up; the button labels correspond to mode
  435.                     selections in the main control panel, but only affect
  436.                     the selected item.
  437.  
  438.                     Buttons available when a placed element is selected
  439.                     are some or all of:
  440.  
  441.                         `Param', `Move', `Elide', `Delete'
  442.  
  443.                     Buttons for inapplicable operations are suppressed,
  444.                     except for `Param' (because this is managed by the
  445.                     module itself).
  446.  
  447.                     A selected Link,  can be `Cut' (if this is possible).
  448.                     A selected BranchPoint can be `Move'd.
  449.  
  450.                     For a connector on a normal source or filter, only
  451.                     an information panel appears, but if it is a multi-
  452.                     connector element, you will also get a panel of
  453.                     buttons designating the possible choices for that
  454.                     connection (with the current choice highlighted).
  455.  
  456.                     `Select' mode is engaged initially if a file was
  457.                     specified in the command line (as is actually the
  458.                     case with both demos).
  459.  
  460.     CANCEL          This button will abort any uncompleted action, such
  461.                     as a Link, Move or Route.  It will NOT undo any
  462.                     operation you have actually completed.  (The program
  463.                     does not currently have an UNDO as such.  Sorry.)
  464.  
  465.  
  466. The Project Menu
  467. ================
  468.  
  469.     New             Clears any current configuration from the screen.
  470.  
  471.     Load Config     Brings up a standard File Requester to select a
  472.                     previously saved Configuration File for loading.
  473.                     It does not clear the screen first; more than one
  474.                     configuration may be loaded at a time, provided
  475.                     that they do not conflict in element positioning
  476.                     or naming.
  477.  
  478.     Save Config as...   Brings up a Standard File Requester to specify
  479.                         a file into which the configuration is to be saved.
  480.                         (Inhibited in demonstration edition.)
  481.  
  482.     About Web       Version and Copyright information.
  483.  
  484.     QUIT Web        Shuts down any running configuration and exits the
  485.                     program.
  486.  
  487.  
  488. Temporary Windows
  489. =================
  490.  
  491. If you move a temporary window (such as the message panel or the `Select'
  492. information window) to another location while it is open, the next time
  493. it pops up it will again be at the new location. (This does not necessarily
  494. apply to windows managed by the modules themselves, such as parameter
  495. panels.)
  496.  
  497.  
  498. Loading Configurations from File
  499. ================================
  500.  
  501. A Configuration File is a text file that describes the sequence of steps
  502. needed to recreate a diagram, together with any parameter settings for
  503. individual module instances.
  504.  
  505. A configuration that is being read expects all the modules that it needs
  506. to be running.  If the read operation encounters a request to place
  507. an element whose module is *not* yet running, it displays the message
  508. "Waiting for Module xxxx", and waits for this to register itself.  If the
  509. module is not already on its way in, you have the choice of either giving
  510. an appropriate CLI command or icon-click to start that module, or aborting
  511. the whole load by clicking `CANCEL'.  The Brancher process is treated here
  512. just like any other module.
  513.  
  514. A Load operation will also abort if there is any conflict between the
  515. file being loaded and what is already on the screen.  Such conflicts
  516. include overlapping an already existing element or having the same name
  517. as an existing one.  You will usually want to clear the screen (`New' in
  518. the Project Menu) before reading a fresh configuration.  However the two
  519. supplied demo configurations (`config.1' and `config.2') have been
  520. constructed so that they can be loaded together.
  521.  
  522. The `Load' menu operation uses a standard ASL File Requester for selection.
  523. If you try to Load a non-existent file you will get an error message --
  524. which is immediately covered by the reappearance of the file requester!
  525.  
  526. Each invocation of the requester remembers the context from the previous
  527. time.  The Web command line option `DIR' (see later) may be used to specify
  528. the initial default directory for the requester.
  529.  
  530.  
  531. CLI command line for the Web
  532. ============================
  533.  
  534. The Web can be invoked from the CLI with command-line parameters.
  535.  
  536. The switch parameter `LACE' (or `INTERLACE' or `-i') sets Interlace mode
  537. for the Web screen.
  538.  
  539. The parameter `DIR dirname' sets the initial directory for configuration
  540. files.
  541.  
  542. A configuration file named in the line will be read immediately on start up.
  543. (More than one name can appear, but there will probably be name conflicts
  544. between elements in the two files unless special precautions have been
  545. taken.)
  546.  
  547. There are no tooltypes recognized by Web as yet.  In most cases anyway you
  548. will probably want to start the whole environment -- with its modules -- as
  549. a unit, so a script is recommended.  Use Xicon or iconX to run that script
  550. from the Workbench.
  551.  
  552. The common script (`run_Web')used to start up the Web demos accepts up to
  553. three parameters (one of which is the configuration file for that demo,
  554. specified in the command line in the icon).  You can invoke it from the CLI
  555. with added arguments (such as `LACE'), or modify the entry in the icon
  556. ToolTypes, if you like.
  557.  
  558.                                + + + + +
  559.  
  560.  
  561. The Demonstration Modules
  562. =========================
  563.  
  564. The following modules accompany the demonstration edition of the Web.
  565. The name in brackets is the actual filename of the module (in the MODULES
  566. subdirectory).
  567.  
  568.   Random Waves  [RanGen]
  569.  
  570.                 Generates a random signal in lieu of real audio events.
  571.                 Data is managed as 8-bit integers for the demonstration
  572.                 (but is converted to floating point values internally
  573.                 by some of the modules, such as the scaler and scope).
  574.  
  575.  
  576.   Scale/Clip    [ClipnScale]
  577.  
  578.                 Selectably applies either a scaling factor or a sharp-cut
  579.                 limit to all channels of the data.
  580.  
  581.   FFT           [FFT]
  582.  
  583.                 Performs either a normal or inverse Fast Fourier Transform
  584.                 on all channels of the data.  The number of points in a
  585.                 channel (set in the source element for the path) MUST be
  586.                 a power of two, otherwise NO transform will be performed.
  587.  
  588.   Gating        [Gate]
  589.  
  590.                 Allows the user to specify `start' and `stop' gating
  591.                 points on the waveform.  This module does not actually
  592.                 make any change in the waveforms themselves.
  593.                 Note that in the current implementation only the first
  594.                 Gating element encountered in a path has any observable
  595.                 effect.
  596.  
  597.   Gate Cut      [GCut]
  598.  
  599.                 Applies the cut points specified by a previous Gating
  600.                 module in the chain.
  601.  
  602.   SCOPE         [Scope]
  603.  
  604.                 Displays all the channels of the data in standard
  605.                 "time-base" graphical form.
  606.  
  607.   Liss SCOPE    [Lissajous]
  608.  
  609.                 Displays any two channels of data in X-Y coordinate
  610.                 form.
  611.  
  612.   Play Audio    [Play]
  613.  
  614.                 Generates audio signals of various (user selectable)
  615.                 kinds from the data.  This is a very complex, application
  616.                 specific module that won't be described in detail here.
  617.                 Note that the audio module cannot accept a further event
  618.                 while it is still playing the previous one; although the
  619.                 Traveller that carries the event being played is released
  620.                 as the sound begins, any further arrival during the sound
  621.                 period will have to wait until the sound completes.
  622.                 Only one Audio element can be active at a time for each
  623.                 of the four audio channels (the first instance placed
  624.                 grabs the channel); if you set the `Waveform #' for a
  625.                 channel to 16 (invalid) the channel will become available.
  626.  
  627.   Read Events   [FileRead]
  628.  
  629.                 Reads previously recorded data from a file (some examples
  630.                 are provided).  Playback rates, ranges, and so on are user
  631.                 controllable.
  632.  
  633.                 (Naturally, there is a corresponding FileWrite module
  634.                 in the full system, not included in the Demonstration
  635.                 Edition.)
  636.  
  637.   Sync          This is a demonstration of how multiple connections to
  638.                 an element are handled.  It accepts three `filter'
  639.                 connections (each with it's own input and output).
  640.                 Packets passing along `Chan A' and `Chan B' will be
  641.                 synchronized: whatever the time they arrive on their
  642.                 respective channels, they will always be passed on
  643.                 simultaneously. A packet arriving on the `Flush' path,
  644.                 though, will release any waiting packets (while not
  645.                 being delayed itself).
  646.  
  647.                 Be aware that when you are playing with the more complex
  648.                 sort of paths that multi-connector modules allow it is
  649.                 quite easy to lock up the data flow.  A full breakdown
  650.                 of the ways this could happen would be lengthy, but if
  651.                 you do get into such a lockup, it isn't serious.  Simply
  652.                 delete the offending module and re-link, to start the
  653.                 data flowing again.  (Linking around the module without
  654.                 deleting it probably won't be enough, because the data
  655.                 packet is almost certainly waiting at that module, and
  656.                 won't be affected by breaking the link.)
  657.  
  658.  
  659. Module Parameter Panels
  660. =======================
  661.  
  662. Each module has its own set of panel gadgets (brought up for an instance
  663. of that module by `Param' selection in the Web Master).  These are detailed
  664. in the sections following.
  665.  
  666.   Random Waves
  667.  
  668.         #Channels       -- sets the number of channels of data to be
  669.                            generated (1-16)
  670.         #pts/waveform   -- how many points are to be generated for
  671.                            each channel (per packet).
  672.         Pause           -- toggles the generation of data On/Off.
  673.  
  674.  
  675.   Scale/Clip
  676.  
  677.         Factor          -- set a value between 1 and 1000, used as
  678.                            determined by the cycle gadget below.
  679.  
  680.         [cycle gadget:]
  681.  
  682.             Off         -- Data is passed straight through without action.
  683.  
  684.             x Factor/1000
  685.                         -- Data values are multiplied by the Slider
  686.                            factor and divided by 1000, thus scaling the
  687.                            data by a fractional value between 0 and 1.
  688.             x Factor/100
  689.                         -- Multiplies by slider value divided by 100, to
  690.                            give a maximum magnification of 10 times.
  691.             x Factor/10
  692.                         -- Multiplies by slider value divided by 10, to
  693.                            give a maximum magnification of 100 times.
  694.             Clip        -- Slider is taken as a value of n/1000 to clip
  695.                            the data at plus and minus that value.
  696.  
  697.  
  698.   FFT
  699.  
  700.         Transform Type [cycle between:]
  701.  
  702.             FFT         -- direct FFT
  703.             IFT         -- inverse FFT
  704.  
  705.  
  706.   Gating
  707.  
  708.         Channel         -- The channel on which the gadget values
  709.                            displayed below are to operate.  (The
  710.                            element affects all channels, but you may
  711.                            select parameters for each individually.
  712.                            (Channels are labelled 0-15.)
  713.  
  714.         Min             -- Sets the lower gate position (scaled as a
  715.                            fraction n/1000 of the whole waveform period).
  716.  
  717.         Max             -- Sets the upper gate position in the same way.
  718.  
  719.         Thresh          -- Sets a threshold amplitude value for the
  720.                            channel, for possible reference by other
  721.                            modules (only the audio module currently
  722.                            uses this... in one of the functions not
  723.                            described here).
  724.  
  725.  
  726.   Gate Cut
  727.  
  728.         [cycle gadget:]
  729.  
  730.             NoGate          -- Gate Marks are ignored; data passed through
  731.                                unchanged.
  732.             Gate Interior   -- The waveform BETWEEN the gate marks (set by
  733.                                a preceding Gating element) is excluded.
  734.             Gate Exterior   -- The waveform OUTSIDE the gate marks is
  735.                                excluded.
  736.  
  737.  
  738.  
  739.   SCOPE
  740.  
  741.         Pause           -- Freezes the display for that element.  It
  742.                            does NOT stop the flow of data, which just
  743.                            bypasses the paused element.
  744.  
  745.         Detail of Display   -- this controls how the scope handles a case
  746.                                where there are more points in the waveform
  747.                                that there are pixels across the display
  748.                                window.  (It has no visual effect if there
  749.                                are fewer points per waveform than this.)
  750.          [cycles between:]
  751.  
  752.             Detail      -- All points are plotted, even if several must
  753.                            be shown in the same single-pixel column.
  754.             Average     -- Plots the average of the points that would
  755.                            otherwise appear in the same column.
  756.                            (Note that this is the slowest of the modes
  757.                            -- even if no actual averaging is being done.)
  758.             Fast        -- Plots only the first point of the group that
  759.                            would appear in one column.
  760.  
  761.         Waves:  [16 toggle buttons] -- toggles on or off the display
  762.                                        of the corresponding channel.
  763.  
  764.  
  765.   Liss SCOPE
  766.  
  767.         Pause           -- same as for SCOPE above.
  768.  
  769.         Detail of Display   -- same options as for SCOPE, but the
  770.                                criterion for choosing the number of
  771.                                points to plot is a little arbitrary.
  772.  
  773.         X-axis Channel  -- selects which of the 16 channels is to
  774.                            be plotted horizontally.
  775.  
  776.         Y-axis Channel  -- selects which of the 16 channels is to
  777.                            be plotted vertically.
  778.  
  779.  
  780.   Play Audio        (Only some functions will be mentioned here -- you
  781.                     may be able to elicit others by experiment.)
  782.  
  783.         Pause           -- Same as for SCOPE etc., but note that it
  784.                            doesn't take effect until the current sound
  785.                            has finished.
  786.  
  787.         Channel [cycle] -- selects which of the four audio channels
  788.                            the remaining gadgets operate on.
  789.  
  790.         Waveform #      -- selects the channel from the data that is
  791.                            to be fed to this audio channel.
  792.  
  793.         Play Type [cycles between:]
  794.  
  795.             WFORM       -- Plays the waveform (from the data channel
  796.                            selected by the `Waveform #' slider directly
  797.                            as a sample. The `Duration' and `# Reps'
  798.                            sliders set the play period and number of
  799.                            repeats for the sample. (The duration is
  800.                            in milliseconds provided that the number of
  801.                            points in the waveform is adequate; it will
  802.                            not maintain this for short data lengths.)
  803.             GWFORM      -- As for WFORM, but plays only the data within
  804.                            gate marks.
  805.             Tone        -- These modes play a tone determined by the time
  806.             GTone          of the first zero-crossing encountered in
  807.             OGTone         various ways.  (They will not be considered
  808.                            further.)
  809.             Tonic       -- plays a tone (controlled by the `Scale' slider
  810.                            and `Scale Type' selector, but otherwise
  811.                            unaffected by the controls OR the data) for
  812.                            each packet.
  813.  
  814.         Volume          -- Sets the overall volume for that channel.
  815.  
  816.  
  817.   Read Events       -- the controls here should be fairly self explanatory.
  818.                     I'll leave you to experiment...
  819.  
  820.                                + + + + +
  821.  
  822.  
  823. Principles
  824. ==========
  825.  
  826. The picture to have of the whole system is of a web of "data processing
  827. elements" or "nodes" linked by paths; the paths are traversed by processes
  828. that carry data packets between the elements, where operations are
  829. performed on the data.  Each path begins at a "source" node where the data
  830. initially enters the system; other nodes on the path are generically known
  831. as "filters", because data enters at one point and leaves at another --
  832. possibly after having been altered in form or content.  A filter does not
  833. necessarily change the data at all, though: it may perform some other
  834. action such as displaying it or recording it in a file, passing its input
  835. on unchanged.
  836.  
  837. At the end of a path there will be one filter that has not been given any
  838. output; at this point, the data packet is simply discarded, and the
  839. travelling process goes back to the source for another load.  (Note that
  840. there is nothing otherwise special about the terminating filter; the path
  841. could be extended if desired by linking it on to further processing.)
  842.  
  843. It is possible for a path to "branch".  At a branch point, incoming data
  844. is duplicated and passed independently down the two downstream forks.  A
  845. branch is thus effectively both a filter, for data passing down one fork,
  846. and a source, for the duplicated data sent down the other.
  847.  
  848. A running Web configuration comprises quite a number of processes working
  849. cooperatively to perform the desired job.  The most visible process is the
  850. `Web' itself, which manages the configuration diagram visible on the
  851. screen.  However, this process has no connection with, or even knowledge
  852. of, the data that is flowing through the web.  It communicates with the
  853. other processes via `IPCMessages' and the `ppIPC' protocol.
  854.  
  855. Packets of data are carried between the elements of the configuration by
  856. `Traveller' processes, one such process for each source of data that is
  857. present (remembering that a branch is also considered a source for one of
  858. its outflows).  Because there is only one Traveller per source, this must
  859. complete its path and return to that source before another packet of data
  860. can be handled.  (In actuality, the Web mechanism does not fundamentally
  861. restrict the number of Travellers that could be associated with a source;
  862. a facility for specifying this number will be provided in a future version.)
  863.  
  864. Again, though, the Travellers have no real concern with the data they carry
  865. -- this is purely determined by the modules that actually provide and
  866. manipulate the data.  A Traveller is started as needed by the Web master
  867. program, but after that it controls its own progress around the Web path
  868. it is assigned, until the source it is associated with is deleted.
  869.  
  870. The Modules that actually manage the data, and the format they use, can
  871. be written to suit the needs of the environment.  As well as working on
  872. the data itself, they will usually provide other functions such as a
  873. "Control Panel" for parameter settings, which can be brought up by a
  874. message sent from the Web master.  The protocol the modules need to
  875. register themselves in the Web, and to accept Traveller data and control
  876. messages is well defined, and full information is available to purchasers
  877. who wish to write their own modules.
  878.  
  879. One point you should keep clear is that there is one, and only one,
  880. running program for each type of module available to the configuration.
  881. You may place as many instances of that type of element as you like in
  882. the diagram (unless there are other constraints -- a module that reads
  883. data from an external hardware channel might be restricted to a single
  884. instance, for example), but that does not start new instances of that
  885. program.  Of course for each new source element, a new Traveller process
  886. will be assigned.
  887.  
  888. Also take note that, although each module has its own process, that process
  889. is often not the one that does the data manipulation.  Rather, the Traveller
  890. that arrives at that point in the Web simply makes a `function call' to
  891. code supplied by the Module, and executes that within its own process
  892. context.  The alternative used by other Modules -- particularly sources --
  893. is for the module process itself to handle all the data packets from all
  894. the instances of that element; the Traveller sends an IPCMessage
  895. (containing the data) to the Module process, which does the required
  896. operation and passes the message back to the Traveller again.
  897.  
  898. The disadvantage of the second method is that passing a message from one
  899. process to another also requires that control pass from the first process
  900. to the second, and this involves a delay while the switch takes place.
  901. A simple function call is much faster, and is therefore preferable where
  902. it is appropriate.  On the other hand, some operations are better managed
  903. by a single process, especially when you may need to "queue" -- as when a
  904. data source must wait for data (from a hardware channel); in this case it
  905. is simpler for the Traveller to send a message and wait for its return.
  906. It is trivial to switch a module from one mechanism to the other; the data
  907. is maintained in the same IPCMessage structure for both cases.
  908.  
  909. Branch points are managed by a further program in almost exactly the same
  910. way as each diagram element, except that the program doesn't appear in
  911. the user selectable buttons.  The single process manages all branch points,
  912. using the IPCMessage mechanism.  An additional Traveller process is used
  913. for one of the forks; the original message continues on down the other.
  914.  
  915. In most cases each Module must either be a "Source", with just one output,
  916. or a "Filter" with one output and one or more inputs.  A normal Filter
  917. -- although it has ony one input "channel", i.e. it applies the same
  918. algorithm to all input -- is permitted to have several input *connections*;
  919. in other words paths can converge on it.  It can, however, have no more
  920. than one output connection.
  921.  
  922. The Web can also handle more specialized modules, with more than one actual
  923. functional connection per element like the `Sync' module in this demo. (The
  924. Branch is basically one such as well -- it has one input and two outputs,
  925. although it does no processing).  These modules use a natural extension
  926. of the single Source and Filter mechanism, but will not be described
  927. further here.
  928.  
  929.                               +  +  +  +  +
  930.  
  931.                                      -- Copyright 1992 Peter J. Goodeve --
  932.